package com.zstu.mall.common;


import com.zstu.mall.entity.pojo.ResultBean;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.io.Serializable;
import java.util.List;

/**
 * create by: wuyc
 * description: BaseService
 * create time: 2019/12/2 18:45
 */
public interface BaseService<T extends BaseEntity, ID extends Serializable, R extends BaseRepository<T, ID>> {

    /**
     * 查询
     * @param id
     * @return
     */
    T get(ID id);

    /**
    * 创建 id
    */
    String createId();

    /**
     * 查询
     * @param pageable
     * @return
     */
    Page<T> findByPage(Pageable pageable);

    /**
     * 查找所有
     * @return
     */
    List<T> findAll();

    /**
     * 删除
     * @param id
     * @return
     */
    ResultBean<T> delete(ID id);

    ResultBean<T> delete(T entity);

    /**
     * 创建
     * @param entity
     * @return
     */
    ResultBean<T> create(T entity);

    /**
     * 更新
     * @param entity
     * @return
     */
    ResultBean<T> update(T entity);

    /**
     * 判断id是否存在
     * @param id
     * @return
     */
    boolean exists(ID id);

}
